package com.etc.controller;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.config.AlipayConfig;
import com.etc.entity.Unpaid;
import com.etc.service.UnpaidService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;

@Controller
@RequestMapping("agian")
public class AgainAlipayController {
    @Autowired
    private UnpaidService unpaidService;

    @RequestMapping(value = "alipay/{amount}/{rid}")
    public ModelAndView getMoney( @PathVariable("amount") BigDecimal amount,@PathVariable("rid") String rid, HttpServletResponse response) {
        System.out.println(amount);
        String amm=String.valueOf(amount);
        ModelAndView md = new ModelAndView();
        md.setViewName("tellogin");

        Unpaid unpaid=unpaidService.FindByRid(Integer.parseInt(rid));
        System.out.println(unpaid);
        //把unpaid中的uid存到cookie
        Cookie uid_cookie = new Cookie("uid", String.valueOf(unpaid.getUid()).trim());
        uid_cookie.setMaxAge(30 * 60);// 设置为30min
        uid_cookie.setPath("/");
        response.addCookie(uid_cookie);


        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
                AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
                AlipayConfig.sign_type);

        // 设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);


        // 商户订单号，商户网站订单系统中唯一订单号，必填
        String out_trade_no = new String("" + System.currentTimeMillis());
        // 付款金额，必填
        String total_amount = new String(amm);
        // 订单名称，必填
        String subject = new String("PE影城");
        // 商品描述，可空
        String body = new String("PE影城");

        alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"," + "\"total_amount\":\"" + total_amount
                + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + body + "\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

        // 若想给BizContent增加其他可选请求参数，以增加自定义超时时间参数timeout_express来举例说明
        // alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
        // + "\"total_amount\":\""+ total_amount +"\","
        // + "\"subject\":\""+ subject +"\","
        // + "\"body\":\""+ body +"\","
        // + "\"timeout_express\":\"10m\","
        // + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        // 请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节

        // 请求
        String result = null;
        try {
            result = alipayClient.pageExecute(alipayRequest).getBody();

        } catch (AlipayApiException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // 输出


        md.setViewName("Alipay");
        md.addObject("result", result);
        return md;
    }

}


